#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
工具模块
提供通用的功能函数
"""

def print_banner():
    """打印欢迎横幅"""
    print("=" * 60)
    print("蓝奏云下载链接与验证码提取工具")
    print("=" * 60)
    print("功能:")
    print("1. 自动导航到搜索页面并输入搜索内容")
    print("2. 自动点击搜索按钮并显示搜索结果")
    print("3. 允许选择要处理的搜索结果数量")
    print("4. 自动从页面中提取蓝奏云下载链接和验证码")
    print("5. 自动处理蓝奏云下载页面，支持自动填写验证码")
    print("6. 支持手动输入HTML代码直接提取链接和验证码")
    print("-" * 60)
    print("使用说明:")
    print("1. 此脚本将自动打开Chrome浏览器并执行操作")
    print("2. 如果网站需要登录，脚本会暂停等待您手动完成登录")
    print("3. 您可以在搜索页面输入关键词进行搜索")
    print("4. 脚本会显示搜索结果并让您选择要处理的结果数量")
    print("5. 对于每个结果，脚本会自动提取蓝奏云链接和验证码")
    print("6. 提取过程会优先选择最后出现的链接和验证码")
    print("7. 如果自动提取失败，您可以手动输入HTML内容")
    print("-" * 60)
    print("常见问题:")
    print("- 如遇SSL证书警告，这是正常的，不影响脚本运行")
    print("- 如果自动提取失败，尝试使用手动HTML输入功能")
    print("- 如需中断操作，可随时按Ctrl+C终止程序")
    print("=" * 60)
    print("")

def print_section(title):
    """打印带有标题的分隔线
    
    Args:
        title: 分隔线中显示的标题
    """
    print("\n" + "=" * 50)
    print(f"   {title}")
    print("=" * 50)

def confirm_action(prompt):
    """询问用户确认操作
    
    Args:
        prompt: 提示信息
        
    Returns:
        bool: 用户是否确认操作
    """
    return input(f"\n{prompt} (y/n): ").lower() == 'y'

def parse_args():
    """解析命令行参数
    
    Returns:
        argparse.Namespace: 解析后的参数
    """
    import argparse
    parser = argparse.ArgumentParser(description='蓝奏云下载链接与验证码提取工具')
    parser.add_argument('-s', '--search', help='直接指定搜索关键词')
    parser.add_argument('-c', '--comment', default='感谢分享', help='设置默认评论内容')
    parser.add_argument('-u', '--url', help='直接处理指定URL，跳过搜索步骤')
    parser.add_argument('--no-headless', action='store_true', help='不使用无头模式（显示浏览器界面）')
    parser.add_argument('--debug', action='store_true', help='启用调试模式，显示更多信息')
    return parser.parse_args()

def create_empty_file(filepath, content=""):
    """创建空白文件
    
    Args:
        filepath: 文件路径
        content: 文件内容
    """
    import os
    # 确保目录存在
    directory = os.path.dirname(filepath)
    if directory and not os.path.exists(directory):
        os.makedirs(directory)
    
    # 创建文件
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(content)

def is_url(text):
    """检查文本是否为URL
    
    Args:
        text: 要检查的文本
        
    Returns:
        bool: 是否为URL
    """
    import re
    url_pattern = re.compile(
        r'^(?:http|https)://' # http:// or https://
        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain
        r'localhost|' # localhost
        r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' # or ipv4
        r'(?::\d+)?' # optional port
        r'(?:/?|[/?]\S+)$', re.IGNORECASE)
    return bool(url_pattern.match(text))

def setup_logging():
    """设置日志配置"""
    import logging
    
    # 配置根日志记录器
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
    
    # 降低第三方库的日志级别
    logging.getLogger('urllib3').setLevel(logging.WARNING)
    logging.getLogger('selenium').setLevel(logging.WARNING)
    logging.getLogger('charset_normalizer').setLevel(logging.WARNING)
    
    # 返回根日志记录器
    return logging.getLogger() 